﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WFNetLib;

namespace 数据函数库
{
    public class DataAnalysis
    {
        public static 传感器阈值Data 传感器阈值DataAnalysis(TcpPacket rx)
        {
            传感器阈值Data cgqData = new 传感器阈值Data();
            cgqData.GreenhouseAddr = rx.Header.GreenhouseAddr;
            cgqData.NoteNum = rx.Header.NoteNum;
            cgqData.空气温度上限 = rx.Data[1];
            cgqData.空气温度下限 = rx.Data[3];
            cgqData.空气湿度上限 = rx.Data[5];
            cgqData.空气湿度下限 = rx.Data[7];
            cgqData.光照上限 = BytesOP.MakeShort(rx.Data[8],rx.Data[9]);
            cgqData.光照下限 = BytesOP.MakeShort(rx.Data[10], rx.Data[11]);
            cgqData.土壤温度上限 = rx.Data[13];
            cgqData.土壤温度下限 = rx.Data[15];
            cgqData.土壤湿度上限 = rx.Data[17];
            cgqData.土壤湿度下限 = rx.Data[19];
            cgqData.二氧化碳上限 = BytesOP.MakeShort(rx.Data[20], rx.Data[21]);
            cgqData.二氧化碳下限 = BytesOP.MakeShort(rx.Data[22], rx.Data[23]);
            cgqData.土壤盐分上限 = rx.Data[25];
            cgqData.土壤盐分下限 = rx.Data[27];
            return cgqData;
        }
        public static 大棚信息Data 大棚信息DataAnalysis(TcpPacket rx)
        {
            大棚信息Data dpData=new 大棚信息Data();
            dpData.GreenhouseAddr = rx.Header.GreenhouseAddr;
            dpData.NoteNum = rx.Header.NoteNum;
            dpData.空气温度数量 = rx.Data[3];
            dpData.空气湿度数量 = rx.Data[4];
            dpData.光照数量 = rx.Data[5];
            dpData.土壤盐分数量 = rx.Data[6];
            dpData.土壤温度数量 = rx.Data[7];
            dpData.土壤湿度数量 = rx.Data[8];
            dpData.二氧化碳数量 = rx.Data[9];
            return dpData;
        }
        public static 实时数据Data 实时数据DataAnalysis(TcpPacket rx)
        {
            实时数据Data ssData = new 实时数据Data();
            //ssData.IP = e.Client.ClientSocket.RemoteEndPoint.ToString();
            ssData.GreenhouseAddr = rx.Header.GreenhouseAddr;
            ssData.NoteNum = rx.Header.NoteNum;
            uint Value;
            float fValue;
            Value = BytesOP.MakeShort(rx.Data[0], rx.Data[1]);
            if (Value == 0xffff)
            {
                fValue = -1;
            }
            else
                fValue = Value / 100.0f;
            ssData.空气温度1 = fValue;
            Value = BytesOP.MakeShort(rx.Data[2], rx.Data[3]);
            if (Value == 0xffff)
            {
                fValue = -1;
            }
            else
                fValue = Value / 100.0f;
            ssData.空气温度2 = fValue;
            Value = BytesOP.MakeShort(rx.Data[4], rx.Data[5]);
            if (Value == 0xffff)
            {
                fValue = -1;
            }
            else
                fValue = Value / 100.0f;
            ssData.空气温度3 = fValue;
            Value = BytesOP.MakeShort(rx.Data[6], rx.Data[7]);
            if (Value == 0xffff)
            {
                fValue = -1;
            }
            else
                fValue = Value / 100.0f;
            ssData.空气湿度1 = fValue;
            Value = BytesOP.MakeShort(rx.Data[8], rx.Data[9]);
            if (Value == 0xffff)
            {
                fValue = -1;
            }
            else
                fValue = Value / 100.0f;
            ssData.空气湿度2 = fValue;
            Value = BytesOP.MakeShort(rx.Data[10], rx.Data[11]);
            if (Value == 0xffff)
            {
                fValue = -1;
            }
            else
                fValue = Value / 100.0f;
            ssData.空气湿度3 = fValue;
            Value = BytesOP.MakeShort(rx.Data[12], rx.Data[13]);
            if (Value == 0xffff)
            {
                fValue = -1;
            }
            else
                fValue = Value / 100.0f;
            ssData.光照1 = fValue;
            Value = BytesOP.MakeShort(rx.Data[14], rx.Data[15]);
            if (Value == 0xffff)
            {
                fValue = -1;
            }
            else
                fValue = Value / 100.0f;
            ssData.光照2 = fValue;
            Value = BytesOP.MakeShort(rx.Data[16], rx.Data[17]);
            if (Value == 0xffff)
            {
                fValue = -1;
            }
            else
                fValue = Value / 100.0f;
            ssData.光照3 = fValue;
            Value = BytesOP.MakeShort(rx.Data[18], rx.Data[19]);
            if (Value == 0xffff)
            {
                fValue = -1;
            }
            else
                fValue = Value / 100.0f;
            ssData.土壤盐分1 = fValue;
            Value = BytesOP.MakeShort(rx.Data[20], rx.Data[21]);
            if (Value == 0xffff)
            {
                fValue = -1;
            }
            else
                fValue = Value / 100.0f;
            ssData.土壤盐分2 = fValue;
            Value = BytesOP.MakeShort(rx.Data[22], rx.Data[23]);
            if (Value == 0xffff)
            {
                fValue = -1;
            }
            else
                fValue = Value / 100.0f;
            ssData.土壤盐分3 = fValue;
            Value = BytesOP.MakeShort(rx.Data[24], rx.Data[25]);
            if (Value == 0xffff)
            {
                fValue = -1;
            }
            else
                fValue = Value / 100.0f;
            ssData.土壤温度1 = fValue;
            Value = BytesOP.MakeShort(rx.Data[26], rx.Data[27]);
            if (Value == 0xffff)
            {
                fValue = -1;
            }
            else
                fValue = Value / 100.0f;
            ssData.土壤温度2 = fValue;
            Value = BytesOP.MakeShort(rx.Data[28], rx.Data[29]);
            if (Value == 0xffff)
            {
                fValue = -1;
            }
            else
                fValue = Value / 100.0f;
            ssData.土壤温度3 = fValue;
            Value = BytesOP.MakeShort(rx.Data[30], rx.Data[31]);
            if (Value == 0xffff)
            {
                fValue = -1;
            }
            else
                fValue = Value / 100.0f;
            ssData.土壤湿度1 = fValue;
            Value = BytesOP.MakeShort(rx.Data[32], rx.Data[33]);
            if (Value == 0xffff)
            {
                fValue = -1;
            }
            else
                fValue = Value / 100.0f;
            ssData.土壤湿度2 = fValue;
            Value = BytesOP.MakeShort(rx.Data[34], rx.Data[35]);
            if (Value == 0xffff)
            {
                fValue = -1;
            }
            else
                fValue = Value / 100.0f;
            ssData.土壤湿度3 = fValue;
            Value = BytesOP.MakeShort(rx.Data[36], rx.Data[37]);
            if (Value == 0xffff)
            {
                fValue = -1;
            }
            else
                fValue = Value / 100.0f;
            ssData.二氧化碳1 = fValue;
            Value = BytesOP.MakeShort(rx.Data[38], rx.Data[39]);
            if (Value == 0xffff)
            {
                fValue = -1;
            }
            else
                fValue = Value / 100.0f;
            ssData.二氧化碳2 = fValue;
            Value = BytesOP.MakeShort(rx.Data[40], rx.Data[41]);
            if (Value == 0xffff)
            {
                fValue = -1;
            }
            else
                fValue = Value / 100.0f;
            ssData.二氧化碳3 = fValue;            
            return ssData;
        }
    }
}
